package com.jt.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jt.mapper.ItemDescMapper;
import com.jt.mapper.ItemMapper;
import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import com.jt.vo.ItemVO;
import com.jt.vo.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import java.util.List;

@Service
public class ItemServcieIml implements ItemService{

    @Autowired
    private ItemMapper itemMapper;

    @Autowired
    private ItemDescMapper itemDescMapper;



    /*查询*/
    @Override
    public PageResult getItemList(PageResult pageResult) {
        Page<Item> page= new Page<>(pageResult.getPageNum(),pageResult.getPageSize());
        QueryWrapper queryWrapper= new QueryWrapper();
        boolean flag= StringUtils.hasLength(pageResult.getQuery());
        queryWrapper.like(flag,"title", pageResult.getQuery());
        page= itemMapper.selectPage(page,queryWrapper);
        long  total =page.getTotal();
        List<Item> list=page.getRecords();
        return pageResult.setTotal(total).setRows(list);
    }


    /*新增操作*/
    @Override
    @Transactional /*事务的控制回滚*/
    public void saveItem(ItemVO itemVO) {
        /*注意
        * id 回显mybites plus底层自动实现了id回显,所以item.getid()才有值,
        * 如果使用的是mybites的话下边详情入库,根据item实例对象的id赋值过来的时候是空值
        * 必须在xml文件中加入;
        *<!--    <insert id="xxx"  useGeneratedKeys="true" keyColumn="主键字段" keyProperty="主键属性"></insert>-->
        *否者 id为空,入库失败
        *
        * 注意 Bug;由于测试数据可能会出现重复现象需要提前优化代码.删除多余的记录.
        * */


        /*商品属性入库*/
        Item item= itemVO.getItem(); /*获取item对象*/
        item.setStatus(true);
        itemMapper.insert(item);/*入库,  主键自增,入库之后才能看到主键*/


        /*获取商品详情再进行入库*/
        ItemDesc itemDesc =itemVO.getItemDesc();
        itemDesc.setId(item.getId());
        itemDescMapper.insert(itemDesc);
    }
}
